using ERPBackend.Models;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace ERPBackend.Services
{
    public interface IEBOMService
    {
        Task<IEnumerable<EBOM>> GetAllEBOMsAsync();
        Task<EBOM> GetEBOMByIdAsync(int id);
        Task<EBOM> GetEBOMByCodeAndVersionAsync(string bomCode, string version);
        Task<IEnumerable<EBOM>> GetEBOMsByMaterialIdAsync(int materialId);
        Task<IEnumerable<EBOM>> SearchEBOMsAsync(string bomCode, string materialName, string status);
        Task<EBOM> CreateEBOMAsync(EBOM ebom);
        Task<bool> UpdateEBOMAsync(EBOM ebom);
        Task<bool> DeleteEBOMAsync(int id);
        Task<bool> ApproveEBOMAsync(int id, int approvedBy);
        Task<bool> EnableEBOMAsync(int id, int enabledBy);
        Task<bool> DisableEBOMAsync(int id, int disabledBy);
        Task<EBOM> CreateNewVersionAsync(int originalBomId, string newVersion, int createdBy, string changeReason);
    }
}